home *** CD-ROM | disk | FTP | other *** search
/ BBS in a Box 1 / BBS in a box - Trilogy I.iso / Files / Publish / J-L / lpr / lpr source / addsw.c next >
Encoding:
C/C++ Source or Header  |  1991-02-21  |  1.9 KB  |  96 lines  |  [TEXT/MPS ]

  1. #include "lprlib.h"
  2.  
  3. main(argc, argv)
  4. int argc; unsigned char * argv[];
  5. {
  6. OSErr rc;
  7. short vref, fref, sizeattrs;
  8. long fsize;
  9. Handle sizehandle;
  10. struct {
  11.     short flags;
  12.     long prefsize;
  13.     long minsize;
  14.     } sizersc;
  15. unsigned char fname[128];
  16. char test;
  17.  
  18. if (argc < 2) {
  19.     printf("A fileid must be specified to addsw.\n");
  20.     return;
  21.     }
  22. strcpy(fname, argv[1]);
  23. c2pstr(fname);
  24. test = argc > 2;
  25.  
  26. /* get size of lpr resource fork */
  27. vref = 0;
  28. rc = OpenRF(fname, vref, &fref);
  29. if (rc != 0) {
  30.     printf("Error %d from OpenRF.\n", rc);
  31.     return(rc);
  32.     }
  33. rc = GetEOF(fref, &fsize);
  34. FSClose(fref);
  35. if (rc != 0) {
  36.     printf("Error %d from GetEOF.\n", rc);
  37.     return(rc);
  38.     }
  39.  
  40. /* construct switcher resource to be added */
  41.  
  42. sizersc.flags = 0x5880;
  43. sizersc.prefsize = ((fsize + 90140L + 512) >> 10) << 10;
  44. sizersc.minsize = ((fsize + 90140L + 512) >> 10) << 10;
  45.  
  46. /* add new resource to lpr */
  47. fref = OpenResFile(fname);
  48. rc = ResError();
  49. if (rc != 0) {
  50.     printf("Error %d from OpenResFile.\n", rc);
  51.     return(rc);
  52.     }
  53. sizehandle = NewHandle(10L);
  54. memcpy(*sizehandle, &sizersc, 10);
  55. AddResource(sizehandle, 'SIZE', -1, "\pSwitcher/MF sizes");
  56. rc = ResError();
  57. if (rc != 0) {
  58.     printf("Error %d from AddResource.\n", rc);
  59.     CloseResFile(fref);
  60.     DisposHandle(sizehandle);
  61.     return(rc);
  62.     }
  63. sizehandle = GetResource('SIZE', -1);
  64. rc = ResError();
  65. if (rc != 0) {
  66.     printf("Error %d from GetResource.\n", rc);
  67.     CloseResFile(fref);
  68.     DisposHandle(sizehandle);
  69.     return(rc);
  70.     }
  71. sizeattrs = GetResAttrs(sizehandle);
  72. rc = ResError();
  73. if (rc != 0) {
  74.     printf("Error %d from GetResAttrs.\n", rc);
  75.     CloseResFile(fref);
  76.     DisposHandle(sizehandle);
  77.     return(rc);
  78.     }
  79. sizeattrs |= resPreload;
  80. SetResAttrs(sizehandle, sizeattrs);
  81. rc = ResError();
  82. if (rc != 0) {
  83.     printf("Error %d from SetResAttrs.\n", rc);
  84.     CloseResFile(fref);
  85.     DisposHandle(sizehandle);
  86.     return(rc);
  87.     }
  88. CloseResFile(fref);
  89. rc = ResError();
  90. if (rc != 0) {
  91.     printf("Error %d from CloseResFile.\n", rc);
  92.     }
  93. DisposHandle(sizehandle);
  94. return(rc);
  95. }
  96.